Understanding prolog [lists]

Posted by wwrob on Stack Overflow See other posts from Stack Overflow or by wwrob
Published on 2010-04-27T18:34:31Z Indexed on 2010/04/28 15:43 UTC
Read the original article Hit count: 191

Filed under:
|

I am to write a program that does this:

?- pLeap(2,5,X,Y).
X = 2,
Y = 3 ;
X = 3,
Y = 4 ;
X = 4,
Y = 5 ;
X = 5,
Y = 5 ;
false.

(gives all pairs X,X+1 between 2 and 5, plus the special case at the end).

This is supposedly the solution. I don't really understand how it works, could anyone guide me through it?

pLeap(X,X,X,X).
pLeap(L,H,X,Y) :-
        L<H,
        X is L,
        Y is X+1.
pLeap(L,H,X,Y) :-
        L=<H,
        L1 is L+1,
        pLeap(L1,H,X,Y).

I'd do it simply like this:

pLeap(L,H,X,Y) :-
        X >= L,
        X =< H,
        Y is X+1.

Why doesn't it work (ignoring the special case at the end)?

© Stack Overflow or respective owner

Related posts about prolog

Related posts about homework